package com.ar.producto.adapter;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import com.ar.producto.model.ProductoModel;
import com.ar.producto.wrapper.ProductoWrapper;
import com.ar.producto.activity.R;

public class ProductoListAdapter extends ArrayAdapter<ProductoModel> {

	private LayoutInflater inflater;
	
	public ProductoListAdapter(Context context, List<ProductoModel> objects) {
		super(context, 0, objects);
		inflater = LayoutInflater.from(context);
	}
	
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		
		View view = convertView;
		ProductoWrapper wrapper;

		if (convertView == null) {
			//creamos el objeto view
			view = inflater.inflate(R.layout.productos_list, null);
			
			/*Creamos el objeto ProductoWrapper y le referenciamos los objetos
			 * que tiene el view para no hacer el find by id todo el tiempo
			 */
			
			wrapper = new ProductoWrapper();
			wrapper.id = (TextView) view.findViewById(R.id.idProducto);
			wrapper.descripcion = (TextView) view.findViewById(R.id.descripcionProducto);
			wrapper.precio = (TextView) view.findViewById(R.id.precioProducto);
			
			//Guardamos el wrapper en el view;
			view.setTag(wrapper);			
		} else {
			/*
			 * Reutilizamos el view que vino (tambien reutilizamos
			 * el wrapper que vino)
			 */
			view = convertView;
			wrapper = (ProductoWrapper) convertView.getTag();
		}
		
		//Cargamos los datos desde la lista segun la posicion
		
		ProductoModel producto = getItem(position);
		
		/*
		 * Cargamos la info del objeto en el textView del wrapper, que es una
		 * referencia del textview de la view que se va a devolver
		 */
		wrapper.id.setText(String.valueOf(producto.getId()));
		wrapper.descripcion.setText(producto.getDescripcion());
		wrapper.precio.setText(String.valueOf(producto.getPrecio()));
		
		return view;
	}
}
